#ifndef Py_ZdibModules_H
#define Py_ZdibModules_H
#ifdef __cplusplus
extern "C" {
#endif

typedef struct _ZdibModuleBase {
	PyObject_VAR_HEAD
	PyObject *dict;
	void *ZdibObject;
}ZdibModuleBase;

PyAPI_DATA(PyTypeObject) PyZdibModuleBase_Type;

#define PyZdibModuleBase_Check(op) PyObject_TypeCheck(op, &PyZdibModuleBase_Type);
#define PyZdibModuleBase_CheckExact(op) ((op)->ob_type == &PyZdibModuleBase_Type);


PyMODINIT_FUNC init_ZdibModules(void);

typedef struct _ZdibTimer {
	PyObject_VAR_HEAD
	PyObject *dict;
	PyObject *fun;
	int timecount;
	void **argvs;
	void *pcb;
}ZdibTimer;

PyAPI_DATA(PyTypeObject) PyZdibTimer_Type;

#define PyZdibTimer_Check(op) PyObject_TypeCheck(op, &PyZdibTimer_Type);
#define PyZdibTimer_CheckExact(op) ((op)->ob_type == &PyZdibTimer_Type);

typedef struct _ZdibBox{
	PyObject_VAR_HEAD
	PyObject *dict;
	void *ZdibObject;
}ZdibBox;

PyAPI_DATA(PyTypeObject) PyZdibBox_Type;

#define PyZdibBox_Check(op) PyObject_TypeCheck(op, &PyZdibBox_Type);
#define PyZdibBox_CheckExact(op) ((op)->ob_type == &PyZdibBox_Type);

typedef struct _ZdibUnrealObject{
	PyObject_VAR_HEAD
	void *obj;
}ZdibUnrealObject;

PyAPI_DATA(PyTypeObject) PyZdibUnrealObject_Type;

#define PyZdibUnrealObject_Check(op) PyObject_TypeCheck(op, &PyZdibUnrealObject_Type);
#define PyZdibUnrealObject_CheckExact(op) ((op)->ob_type == &PyZdibUnrealObject_Type);

typedef struct _ZdibImager{
	PyObject_VAR_HEAD
	PyObject *dict;
	void *ZdibObject;
}ZdibImager;

PyAPI_DATA(PyTypeObject) PyZdibImager_Type;

#define PyZdibImager_Check(op) PyObject_TypeCheck(op, &PyZdibImager_Type);
#define PyZdibImager_CheckExact(op) ((op)->ob_type == &PyZdibImager_Type);

typedef struct _ZdibCutImager{
	PyObject_VAR_HEAD
	PyObject *dict;
	void *ZdibObject;
}ZdibCutImager;

PyAPI_DATA(PyTypeObject) PyZdibCutImager_Type;

#define PyZdibCutImager_Check(op) PyObject_TypeCheck(op, &PyZdibCutImager_Type);
#define PyZdibCutImager_CheckExact(op) ((op)->ob_type == &PyZdibCutImager_Type);

#ifdef __cplusplus
}
#endif
#endif